package me.zhengjie.service.impl;


import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import lombok.RequiredArgsConstructor;
import me.zhengjie.service.PLCService;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
@RequiredArgsConstructor
public class PLCServiceImpl implements PLCService {

    public Map<String, Object> queryAll() {
        SiemensS7Net siemensTcpNet = new SiemensS7Net(SiemensPLCS.S200, "192.168.1.218");
        float float_M100 = siemensTcpNet.ReadFloat( "VD100" ).Content;
        System.out.println(float_M100);
        long ushort_M100 = siemensTcpNet.ReadUInt32( "VD104" ).Content;

        System.out.println(ushort_M100);
        int a = siemensTcpNet.ReadInt32("VD108").Content;
        System.out.println(a);
        //105代表读取的长度
//        OperateResultExOne<byte[]> read = siemensTcpNet.Read("VD100", (short) 8);
//    if (read.IsSuccess) {
//        byte[] content = read.Content;
//        //2是下标
//        double no = siemensTcpNet.getByteTransform().TransDouble(content, 0);
//        System.out.println(no);
//    }
        return null;
    }

//    public Map<String, Object> queryAll() {
//
//        //PLC地址
//        String ipAddress = "192.168.1.218";
//        //默认端口
//        int port = 102;
//        S7Connector s7Connector = S7ConnectorFactory
//                .buildTCPConnector()
//                .withHost(ipAddress)
//                .withPort(port)
//                .withRack(0)
//                .withSlot(1)
//                .withTimeout(1000000) //连接超时时间
//                .build();
//        //第一个参数：DaveArea.DB 表示读取PLC的地址区域为DB
//        //第二个参数：DB地址，若plc中是DB1082，则填1082
//        //第三个参数：数据长度
//        //第四个参数：偏移量
//        byte[] plcData = s7Connector.read(DaveArea.DB, 100, 16, 4);
//        String str = new String(plcData);
//        System.out.println("读取到的数据=" + str);
//
//        return null;
//    }

//    public Map<String, Object> queryAll() {
//
//        S7PLC s7PLC = new S7PLC(EPlcType.S200, "192.168.1.218");
//        s7PLC.writeByte("DB201", (byte) 0x11);
//        System.out.println(s7PLC.readByte("DB201"));
//        s7PLC.writeByte("DB2.1", (byte) 0x12);
//        System.out.println(s7PLC.readByte("VW105"));
//        s7PLC.writeByte("DB2.1", (byte) 0x10);
//        System.out.println(s7PLC.readByte("VB101"));
//        s7PLC.writeByte("V2.1", (byte) 0x11);
//
//
////        float byteData = s7PLC.readFloat32("VVD101");
////        System.out.println(byteData);
//        // close
//        s7PLC.close();
//
//
//        return null;
//    }
}
